#pragma once
#include "UltimatePhysicsScene.h"
#include "UltimatePhysX3Precompiled.h"
#include "UltimatePhysX3Actor.h"
#include "UltimatePhysX3ActorDesc.h"
#include "PxDefaultSimulationFilterShader.h"





class _UltimatePhysX3Export UltimatePhysX3Scene :
	public UltimatePhysicsScene
{

	PxScene * mPxScene;
	PxMaterial* mMaterial;
	PxPhysics*	mPhysics;


public:
	UltimatePhysX3Scene(PxScene *scene,PxPhysics* physics);
	~UltimatePhysX3Scene(void);

	virtual bool initScene();

	virtual UltimatePhysicsActor * createPhysicsActor(UltimatePhysicsActorDesc *desc,Ogre::Vector3 position, Ogre::Quaternion orientation, bool isKinematic, bool isStatic, int collisionGroup, int weight=1);
	virtual UltimatePhysicsActorDesc * createPhysicsActorDesc();
	virtual void destroyPhysicsActor(UltimatePhysicsActor* actor);
	virtual void createPhysicsPlane(int height,int collisionGroup);
	virtual void setGravity(int x, int y, int z);
	virtual void addContactListener(UltimatePhysicsContactListener* listener);


	virtual void stepSimulation(float elapsedTime);

};

